/*
 * DigiQueue.cc
 *
 * @created Apr 11, 2013
 * @author Tim Niggemann, III Phys. Inst. A, RWTH Aachen University
 * @copyright GNU General Public License v3.0
 */

#include "digi/G4SipmDigiQueue.hh"

G4SipmDigiQueue::G4SipmDigiQueue()
{
	//
}

G4SipmDigiQueue::~G4SipmDigiQueue()
{
	//
}
// 将数字信号加入队列，将给定的Sipm数字化数据对象推入队列中。如果传入的Sipm数字化数据对象不为空，则将其推入队列。
void G4SipmDigiQueue::push(G4SipmDigi *digi)
{
	if (digi != NULL)
	{
		G4SipmAbstractDigiQueue::push(digi);
	}
}
// 将所有新数字信号推入队列，将一个包含G4SipmDigi指针的向量中的所有元素推入队列中。
void G4SipmDigiQueue::pushAll(const std::vector<G4SipmDigi *> &newDigis)
{
	if (newDigis.size() != 0)
	{
		for (std::vector<G4SipmDigi *>::const_iterator it = newDigis.begin(); it != newDigis.end(); it++)
		{
			push(*it);
		}
	}
}
// 获取下一个数字信号，从队列中移除并返回队首的Sipm数字化数据对象。如果队列不为空，则执行此操作；否则返回NULL。
G4SipmDigi *G4SipmDigiQueue::next()
{
	if (hasNext())
	{
		G4SipmDigi *digi = top();
		pop();
		return digi;
	}
	return NULL;
}
// 检查队列是否包含下一个数字信号，返回一个布尔值表示队列中是否有元素。如果有至少一个Sipm数字化数据对象在队列中，则返回true；否则返回false。
bool G4SipmDigiQueue::hasNext() const
{
	return size() > 0;
}
